﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

/*
 * autor: Ana Isabel Marques 6052
 * version: 25 de Fevereiro de 2012
 */
namespace LP_Csharp
{
    public partial class GUI : Form
    {
         CreateDataBase database = new CreateDataBase();
         Statistics estatistica = new Statistics();
 
        public GUI()
        {
            string ficheiroBaseDados = "rebides.db";
            //Pergunta ao utilizador se pretende criar a base de dados
            DialogResult res = MessageBox.Show("Deseja criar a base de dados?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            //Se o utilizador clicar no botão "Yes"
            if (res == DialogResult.Yes)
            {
                database.cria_preenche_tabelas(); //cria a base de dados
            }
            //Senão verifica se a base de dados está criada
            else
            {
                //Se a base de dados rebides.db não existe
                if (File.Exists(ficheiroBaseDados) == false) 
                {
                    //Mostra uma caixa de diálogo que informa ao utilizador que não existe nenhuma base de dados e pergunta novamente se quer criar a base de dados.
                    DialogResult res1 = MessageBox.Show("Não existe nenhuma base de dados! Pretende criar uma base de dados?", "",  MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                    //Se o utilizador clicar no botão Yes
                    if (res1 == DialogResult.Yes)
                    {
                        database.cria_preenche_tabelas(); //cria a base de dados
                    }
                    //Senão
                    else
                    {
                        this.Close(); //fecha a aplicação.
                    }
                }
            }

            InitializeComponent();

            panel1.Show(); //Mostra o painel1, painel que mostra a informação relativa à estatistica1
            panel2.Hide(); //Esconde o painel2, painel que mostra a informação relativa à estatistica2
            panel3.Hide(); //Esconde o painel3, painel que mostra a informação relativa à estatistica3

            //preenche a comboBox2 e a comboBox4 com todas as categorias profissionais existentes na base de dados.
            foreach (string categoria in estatistica.obterCategoriasProfissionais())
            {
                comboBox2.Items.Add(categoria);
                comboBox4.Items.Add(categoria);
            }

            //preenche a comboBox5 com todos os estabelecimetos de ensino existentes na base de dados.
            foreach (string estabelecimento in estatistica.obterEstabelecimentosEnsino())
            {
                comboBox5.Items.Add(estabelecimento);
            }

        }

        //Ao selecionarmos o radioButton1, opção correspondente à estatística1
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            panel1.Show(); //Mostra o painel1, painel que mostra a informação relativa à estatistica1
            panel2.Hide(); //Esconde o painel2, painel que mostra a informação relativa à estatistica2
            panel3.Hide(); //Esconde o painel3, painel que mostra a informação relativa à estatistica3
        }
        
        //Ao selecionarmos o radioButton2, opção correspondente à estatística2
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            panel2.Show(); //Mostra o painel2, painel que mostra a informação relativa à estatistica2
            panel1.Hide(); //Esconde o painel1, painel que mostra a informação relativa à estatistica1
            panel3.Hide(); //Esconde o painel3, painel que mostra a informação relativa à estatistica3
        }

        //Ao selecionarmos o radioButton3, opção correspondente à estatística3
        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            panel3.Show(); //Mostra o painel3, painel que mostra a informação relativa à estatistica3
            panel1.Hide(); //Esconde o painel1, painel que mostra a informação relativa à estatistica1
            panel2.Hide(); //Esconde o painel2, painel que mostra a informação relativa à estatistica2
        }

        //Quando o button2, botão que permite consultar a estatística1, é clicado 
        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Clear();  //limpa a textBox1   correspondente ao número de docentes, no ano 2000
            textBox4.Clear();  //limpa a textBox4   correspondente ao número de docentes, no ano 2001
            textBox5.Clear();  //limpa a textBox5   correspondente ao número de docentes, no ano 2002
            textBox6.Clear();  //limpa a textBox6   correspondente ao número de docentes, no ano 2003
            textBox7.Clear();  //limpa a textBox7   correspondente ao número de docentes, no ano 2004
            textBox8.Clear();  //limpa a textBox8   correspondente ao número de docentes, no ano 2005
            textBox9.Clear();  //limpa a textBox9   correspondente ao número de docentes, no ano 2006
            textBox10.Clear(); //limpa a textBox10  correspondente ao número de docentes, no ano 2007
            textBox11.Clear(); //limpa a textBox11  correspondente ao número de docentes, no ano 2008
            textBox12.Clear(); //limpa a textBox12  correspondente ao número de docentes, no ano 2009
            textBox13.Clear(); //limpa a textBox13  correspondente ao número de docentes, no ano 2010
            
            textBox1.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2000)); //adiciona a textBox1 , o número de docentes calculado no ano 2000
            textBox4.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2001)); //adiciona a textBox4 , o número de docentes calculado no ano 2001
            textBox5.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2002)); //adiciona a textBox5 , o número de docentes calculado no ano 2002
            textBox6.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2003)); //adiciona a textBox6 , o número de docentes calculado no ano 2003
            textBox7.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2004)); //adiciona a textBox7 , o número de docentes calculado no ano 2004
            textBox8.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2005)); //adiciona a textBox8 , o número de docentes calculado no ano 2005
            textBox9.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2006)); //adiciona a textBox9 , o número de docentes calculado no ano 2006
            textBox10.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2007));//adiciona a textBox10, o número de docentes calculado no ano 2007
            textBox11.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2008));//adiciona a textBox11, o número de docentes calculado no ano 2008
            textBox12.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2009));//adiciona a textBox12, o número de docentes calculado no ano 2009
            textBox13.AppendText("" + estatistica.numeroTotalEstabelecimentosAno(2010));//adiciona a textBox13, o número de docentes calculado no ano 2010
        }

        //Quando o button3, botão que permite consultar a estatística2, é clicado 
        private void button3_Click(object sender, EventArgs e)
        {
            textBox2.Clear();  //limpa a textBox2  correspondente ao número de docentes, no ano 2000
            textBox14.Clear(); //limpa a textBox14 correspondente ao número de docentes, no ano 2001
            textBox15.Clear(); //limpa a textBox15 correspondente ao número de docentes, no ano 2002
            textBox16.Clear(); //limpa a textBox16 correspondente ao número de docentes, no ano 2003
            textBox17.Clear(); //limpa a textBox17 correspondente ao número de docentes, no ano 2004
            textBox18.Clear(); //limpa a textBox18 correspondente ao número de docentes, no ano 2005
            textBox19.Clear(); //limpa a textBox19 correspondente ao número de docentes, no ano 2006
            textBox20.Clear(); //limpa a textBox20 correspondente ao número de docentes, no ano 2007
            textBox21.Clear(); //limpa a textBox21 correspondente ao número de docentes, no ano 2008
            textBox22.Clear(); //limpa a textBox22 correspondente ao número de docentes, no ano 2009
            textBox23.Clear(); //limpa a textBox23 correspondente ao número de docentes, no ano 2010

            string categoria = comboBox2.SelectedItem.ToString(); //Guarda na variável categoria, a categoria profissional escolhida pelo utilizador na comboBox2

            textBox2.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2000, categoria));  // adiciona a textBox2, o número de docentes calculado no ano 2000
            textBox14.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2001, categoria)); //adiciona a textBox14, o número de docentes calculado no ano 2001
            textBox15.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2002, categoria)); //adiciona a textBox15, o número de docentes calculado no ano 2002
            textBox16.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2003, categoria)); //adiciona a textBox16, o número de docentes calculado no ano 2003
            textBox17.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2004, categoria)); //adiciona a textBox17, o número de docentes calculado no ano 2004
            textBox18.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2005, categoria)); //adiciona a textBox18, o número de docentes calculado no ano 2005
            textBox19.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2006, categoria)); //adiciona a textBox19, o número de docentes calculado no ano 2006
            textBox20.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2007, categoria)); //adiciona a textBox20, o número de docentes calculado no ano 2007
            textBox21.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2008, categoria)); //adiciona a textBox21, o número de docentes calculado no ano 2008
            textBox22.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2009, categoria)); //adiciona a textBox22, o número de docentes calculado no ano 2009
            textBox23.AppendText("" + estatistica.distribuicaoDocentesCategoriaProfissionalAno(2010, categoria)); //adiciona a textBox23, o número de docentes calculado no ano 2010
        }

        //Quando o button4, botão que permite consultar a estatística3, é clicado 
        private void button4_Click(object sender, EventArgs e)
        {
            textBox3.Clear(); //textBox3 é limpa
            listBox3.Items.Clear(); //listBox3 é limpa
            
            string categoria = comboBox4.SelectedItem.ToString(); //guarda na variável categoria, a categoria profissional seleccionada pelo utilizador na comboBox4
            string estabelecimento = comboBox5.SelectedItem.ToString(); //guarda na variável estabelecimento, o estabelecimento de ensino seleccionado pelo utilizador na comboBox4

            int numeroDocentes = estatistica.numeroDocentesCategoriaProfissionalEstabelecimento(categoria, estabelecimento); // Guarda na variável numeroDocentes, o numero total de docentes calculado pelo método corespondente

            textBox3.AppendText("" + numeroDocentes); //Adiciona à textBox3, o conteúdo da variável numeroDocentes

            //Se o numero de docentes for maior que 0, 
            if (numeroDocentes > 0)
            {
                foreach (string[] docente in estatistica.listaDocentesCategoriaProfissionalEstabelecimento(categoria, estabelecimento))
                {
                    listBox3.Items.Add(docente[0]); //adiciona a listBox3, o nome dos docentes 
                }
            }
            //Senão
            else
            {
                listBox3.Items.Add("Não existem docentes no estabelecimento de ensino e com a categoria profissional escolhidos."); //Adiciona à listBox3 que não existe nenhum docente com a categoria profissional e com o estabelecimeto de ensino escolhidos.
            }
        }

        //Quando é seleccionado um item na comboBox2, comboBox que apresenta todas as categorias profissionais existentes
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            textBox2.Clear();  //limpa a textBox2  correspondente ao número de docentes, no ano 2000
            textBox14.Clear(); //limpa a textBox14 correspondente ao número de docentes, no ano 2001
            textBox15.Clear(); //limpa a textBox15 correspondente ao número de docentes, no ano 2002
            textBox16.Clear(); //limpa a textBox16 correspondente ao número de docentes, no ano 2003
            textBox17.Clear(); //limpa a textBox17 correspondente ao número de docentes, no ano 2004
            textBox18.Clear(); //limpa a textBox18 correspondente ao número de docentes, no ano 2005
            textBox19.Clear(); //limpa a textBox19 correspondente ao número de docentes, no ano 2006
            textBox20.Clear(); //limpa a textBox20 correspondente ao número de docentes, no ano 2007
            textBox21.Clear(); //limpa a textBox21 correspondente ao número de docentes, no ano 2008
            textBox22.Clear(); //limpa a textBox22 correspondente ao número de docentes, no ano 2009
            textBox23.Clear(); //limpa a textBox23 correspondente ao número de docentes, no ano 2010
        }

        //Quando é seleccionado um item na comboBox4, comboBox que apresenta todas as categorias profissionais existentes
        private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            textBox3.Clear();// a textBox3, que apresenta o número de docentes, é limpa.
            listBox3.Items.Clear();// a listBox3, que apresenta os nomes dos docentes, é limpa.
        }

        //Quando é seleccionado um item na comboBox5, comboBox que apresenta todos os estabelecimentos de ensino existentes
        private void comboBox5_SelectedIndexChanged(object sender, EventArgs e)
        {
            textBox3.Clear();// a textBox3, que apresenta o número de docentes, é limpa.
            listBox3.Items.Clear();// a listBox3, que apresenta os nomes dos docentes, é limpa.
        }
    }
}
